import 'package:dio/dio.dart';

import '../public.dart';

enum CatalogType {
  /// 移动用户卖卡（catalogType=1）
  mobileUserSellCard,

  /// 卡种类icon（catalogType=2）
  cardCategoryIcon,

  /// 银行icon（catalogType=3）
  bankIcon,

  /// app安装包（catalogType=4）
  appInstallPackage,

  /// app的logo（catalogType=5）
  appLogo,

  /// 财务审批通过或拒绝时上传凭证（catalogType=6）
  financialApproval,

  /// 核销审批通过或拒绝时上传凭证（catalogType=7）
  redemptionApproval,

  /// 轮播图banner（catalogType=8）
  carouselBanner,
}

Map<CatalogType, int> catalogTypeMap = {
  CatalogType.mobileUserSellCard: 1,
  CatalogType.cardCategoryIcon: 2,
  CatalogType.bankIcon: 3,
  CatalogType.appInstallPackage: 4,
  CatalogType.appLogo: 5,
  CatalogType.financialApproval: 6,
  CatalogType.redemptionApproval: 7,
  CatalogType.carouselBanner: 8,
};

class FileUpApi {
  /// 上传文件
  // catalogType表示要上传的目录类型：移动用户卖卡（catalogType=1），卡种类icon（catalogType=2），银行icon（catalogType=3），app安装包（catalogType=4），app的logo（catalogType=5），财务审批通过或拒绝时上传凭证（catalogType=6），核销审批通过或拒绝时上传凭证（catalogType=7），轮播图banner（catalogType=8）
  static Future<BaseResponse<String?>> upload({
    required CatalogType catalogType,
    required File file,
  }) async {
    final response = await HttpUtil().request(
      '/file/${catalogTypeMap[catalogType]}/upload',
      method: 'POST',
      data: FormData.fromMap({'file': await MultipartFile.fromFile(file.path)}),
    );

    return BaseResponse<String?>.fromJson(
      response,
      fromJsonT: (json) {
        return CryptoUtil.decryptData(json);
      },
    );
  }
}
